Most computer systems use a display terminal as the primary method of interacting with the user. Information is given to the user by displaying alphanumeric or graphical data to the user on the display terminal. Typically, the display is controlled by the operating system, and applications programs provide a display by transferring data to the operating system which in turn sends this information to the display.
Early display terminals were generally directed toward displaying alphanumeric information. Such terminals would typically have a fixed number of rows, each row containing a plurality of columns. Each row and column location is a fixed size and displays one character. Limited graphical displays may be achieved on such terminals by including a plurality of graphic characters in addition to the standard ASCII alphanumeric character set. Since each character on this type of display is a fixed size, it is easy to determine where, on a display, a particular character will be located.
Recently, however, bit mapped displays have become more widely used as the cost of such displays decreases and new applications programs demand greater performance from the display terminal. Many word processing programs have the capability to display text using multiple fonts, including differently-sized fonts and proportionally spaced fonts. The support of such fonts by operating systems is also becoming more common. When using these fonts, determining the position of an individual character becomes much more complicated. The location depends upon the prior characters displayed and their individual widths.
Another factor affecting the display of information is the increasing complexity of operating systems, particularly operating systems which support multiple users or multiple tasks. Newer operating systems tend to require display data to be formatted as a logical description of the information to be displayed rather than as a physical specification of the actual data which must be sent to the display to provide a desired display. For example, to display a rectangle, an operating system may require coordinates corresponding to two opposite corners of the rectangle, as opposed to a sequence of coordinates defining each of the display locations to be turned on to display the rectangle. This type of approach has two principle advantages. First, it isolates applications programs from the physical characteristics and limitation of the particular display device being used. Thus, a request for a rectangle would automatically be converted by the operating system to a series of bits corresponding to the rectangle size to be displayed on a bit-mapped display, while the same request would be converted to a number of graphical characters representing the sides and corners of the rectangle for display on a character-oriented display. Second, with this method of operation, much of the display code is contained within the operating system which allows for optimization of the code and avoids duplication of code in multi tasking systems.
In presenting multi-part displays to a user, an operating system frequently receives information specifying a series of graphic and/or textual display parts having a specified orientation. For example, in response to a command, the operating system may be required to display a question which is presented to the user and which is followed by the user s response as it is typed. Another example is the use of multiple menus and menu bars for the selection of different parameters during the operation of a program.
There are several approaches to displaying information of the above described type which are currently used. One method is X/Y positioning, in which the origin (such as the upper left corner) of each character or graphic object is specified by a coordinate pair. The coordinate pair is converted to screen coordinates by a mapping function. This may be a one to one relationship of integer coordinates to pixels or may include scaling up or down of a display to optimally utilize a particular display device. This method has the disadvantage of all numerical coordinate systems in that the size of objects must be known before their positions in a group can be specified, which can present difficulty if proportionally spaced text is supported by the computer system.
An improvement on the X/Y positioning method is space/leading positioning. In this method, the objects are organized into an array. The vertical distance between rows of the array is a constant value called the leading. The objects within the rows are concatenated. Horizontal positioning is accomplished by inserting text objects consisting of space characters in the rows. This method has advantages over X/Y positioning when used with proportionally spaced fonts, since the leading and width of the space character may be easily changed as the fonts are changed. This method has the disadvantage that it is not very flexible and is only useful for arrays, or rows and columns, of objects. Thus, menus and dialogue boxes, which are becoming more popular, are not easily accommodated with a space/leading positioning technique.
An improvement on space/leading involves the addition of tabbing functions. This is similar to space/leading positioning except that tabbing characters or escape sequences can be used in text strings to specify, for example, alignment of subsequent objects, rather than mere concatenation. This technique is more flexible than space/leading positioning alone, but results in more complicated object descriptions. For example, to get a line with "middle" centered and "end" right-aligned, a program might send a text string such as "beginning/cmiddle/rend," where "/" represents an escape sequence initiation character, and the "c" and "r" represent escape sequences for centering and right alignment respectively.